/*
 * 基于miniui、jquery、webuploader的上传控件
 * @author:luys
 * */



/****单个上传控件上传多个文件****/
MultiWebUploader=function(){
	var uploader;
	var file_length=0;
	var imgWidth=600;
	var imgHeight=400;
	var id="";
	var gridUrl="";
	var fileGridDom;
	/* *****************************************************************
	 * 初始化方法
	 * *****************************************************************
	 * 参数{id:'',name:'',url:'',onlyImage:true,pasteAndDrag:true,uploadComplete:event,imgWidth:600,imgHeight:400}
	 * *****************************************************************
	 *  参数说明     id:上传控件绑定的元素ID，缺省时为file；
	 *					name：后台接收的上传控件域名称,缺省时为file；
	 *					url:上传文件的后台action地址；
	 *					gridUrl:列表加载已上传附件的后台action地址；后台数据结构{name:'文件名称',url:'文件绝对路径地址',type:'文件后缀名，不需要点号',size:'文件大小，带单位MB,GB……'}，其中type和size可缺失
	 *					gridImgViewUrl:列表中已上传图片的预览后台action地址，后台接收参数为url
	 *					gridDownloadUrl:列表中已上传文件下载的后台action地址，后台接收参数为url，fileName(此处配置时不需要，会自动获取gridUrl返回的url及name)
	 *					deleteRemoteFile:删除已上传的附件事件
	 *					onlyImage:布尔类型，true时只接收图片格式，缺省为false，接收所有类型文件
	 *					acceptType:自定义上传文件类型，仅当onlyImage=false时生效。
	 *					uploadComplete:上传结束事件，文件全部上传结束（无论成功或失败）后触发
	 *					pasteAndDrag:布尔类型,true时支持文件拖拽和图片粘贴功能，缺省为true
	 *					imgWidth:图片预览宽度，单位px，默认600
	 *					imgHeight:图片预览高度，单位px，默认400
	 *******************************************************************/
	var initial=function(e){
		//参数处理
		id=e.id;
		gridUrl=e.gridUrl;
		if(id==undefined){
			id="file";
		}
		var name=e.name;
		if(name==undefined){
			name="file";
		}
		var acceptType=null;
		if(e.onlyImage==undefined||e.onlyImage==false){
			if(e.acceptType!=undefined){
				acceptType=e.acceptType;
			}else{
    			acceptType= {
    					title:'AllFile',
    					extensions: "jpg,jpeg,bmp,png,doc,docx,xls,xlsx,ppt,pptx,pdf,rar,zip",
    					mimeTypes: "image/jpg,image/jpeg,image/bmp,image/png,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.rar,.zip"
                };
			}
		}else{
			acceptType={
	 	        	title: 'Images',
	 	        	extensions: 'jpg,jpeg,bmp,png',
	        	    mimeTypes: 'image/jpg,image/jpeg,image/bmp,image/png'
		    };
		}
		imgWidth=e.imgWidth;
		if(imgWidth==undefined){
			imgWidth=600;
		}
		imgHeight=e.imgHeight;
		if(imgHeight==undefined){
			imgHeight=400;
		}
		var pasteAndDrag=e.pasteAndDrag;
		if(pasteAndDrag==undefined){
			pasteAndDrag==true;
		}
		var gridDownloadUrl=e.gridDownloadUrl;
		//初始化文件选择框
		$("#"+id).parent().css("vertical-align","top");
		$("#"+id).parent().append("<div id='"+id+"_fileGrid_div' class='upload-single-view'></div>");
		fileGridDom=$("#"+id+"_fileGrid_div");
		
		var pasteAndDragDnd=null;
		if(pasteAndDrag){
			pasteAndDragDnd=fileGridDom;
		}
		
		//初始化上传按钮
		uploader= WebUploader.create({
		    // swf文件路径
		    swf: ctx+'/js/webuploader-0.1.5/Uploader.swf',
		    // 文件接收服务端。
		    server: e.url,
		    // 选择文件的按钮。可选。
		    // 内部根据当前运行是创建，可能是input元素，也可能是flash.
		    pick: {
		    	id:"#"+id,
		    	multiple:true
		    },
		    fileVal:name,//设置文件上传域的name（后台根据此name接收文件）默认值为file。
		    // 不压缩image, 默认如果是jpeg，文件上传前会压缩一把再上传！
		    resize: false,
		 	// 单个文件大小限制（单位：byte），这里限制为 100M
	        fileSingleSizeLimit:100*1024 * 1024,
	        fileNumLimit:20,//上传数量限制
	        fileSizeLimit:200*1024*1024,//限制上传所有文件大小
	        timeout: 0,
	        chunked: false,  // 开启分片上传，如果要开启的话，后台要提供对应的支持。
	        accept: acceptType,
	        auto:false,
	        disableGlobalDnd:pasteAndDrag,//是否禁掉整个页面的拖拽功能，如果不禁用，图片拖进来的时候会默认被浏览器打开
	        dnd:pasteAndDragDnd,//拖拽区域
	        paste:pasteAndDragDnd//document.body指定监听paste事件的容器，如果不指定，不启用此功能。通过粘贴来添加截屏的图片
		});
		//初始化下载form
		var downloadFormDom=$("#fileGrid-file-remote-download-form")[0];
		if(downloadFormDom==undefined){
			$(document.body).append('<form id="fileGrid-file-remote-download-form" action="" method="post"></form>');
		}
		//删除客户端当前选中文件
		fileGridDom.on("click", ".fileGrid-file-remove", function (e2) {
			   fileGridDom.find("#"+id+$(this).attr("filedId")+"-file-row").remove();
		       uploader.removeFile($(this).attr("filedId"),true);
		       file_length--;
	    });
	    //删除服务端当前选中文件
	    fileGridDom.on("click", ".fileGrid-file-remote-remove", function (e3) {
	    	var that=$(this);
	    	showConfirm("确认删除文件？","","question",function(e9){
				   fileGridDom.find("#"+$(that).attr("filedId")+"-remote-file-row").remove();
			       e.deleteRemoteFile(that.attr("url"));
			});
	    });
	    //本地图片预览
	    fileGridDom.on("click", ".fileGrid-file-imgview", function (e4) {
	    	var type=$(this).attr("type");
	        if(type=="gif"||type=="jpg"||type=="jpeg"||type=="bmp"||type=="png"){
	        }else{
	        	showAlertAutoHide("本地文件不支持预览！","warn",1000);
	        	return;
	        }
	        
	    	var file=uploader.getFile($(this).attr("filedId"));
	    	uploader.makeThumb( file, function( error, src ) {
	    		if(error){
	    			showAlert("图片预览失败！",'error','');
	    		}else{
	    			var win = mini.open({
		    	            title: '图片本地预览',
		    	            showModal: false,
		    	            showMaxButton:true,
		    	            width: imgWidth,
		    	            height: imgHeight
		    	        });
	    			win.getBodyEl().innerHTML='<img style="width:100%;height:100%" src="'+src+'"></img>';
		    		mini.parse();
	    		}
	        },1,1);
	    });
	    //服务端图片预览
		fileGridDom.on("click", ".fileGrid-file-remote-imgview", function (e8) {
	    	var url=$(this).attr("url");
	    	var win = mini.open({
	            title: '已上传图片查看',
	            showModal: false,
	            showMaxButton:true,
	            width: imgWidth,
	            height: imgHeight
	        });
	    	win.getBodyEl().innerHTML='<img style="width:100%;height:100%" src="'+e.gridImgViewUrl+'?url='+url+'"></img>';
			mini.parse();
	    });
		//服务端文件下载
		fileGridDom.on("click", ".fileGrid-file-remote-download", function (e9) {
            var fileGrid_file_remote_download_url = $(this).attr("url");
            var fileGrid_file_remote_download_fileName = $(this).attr("fileName");
            $("#fileGrid-file-remote-download-form").attr("action", gridDownloadUrl+"?url=" + fileGrid_file_remote_download_url+"&fileName="+fileGrid_file_remote_download_fileName);
            $("#fileGrid-file-remote-download-form").submit();
        });
		//绑定上传控件事件
		//文件选择事件
		file_length=0;
		uploader.on('fileQueued', function( file ) {
			if(file.name.length>50){
				uploader.removeFile(file.id,true);
				showAlert("文件名字符长度不能超过50！",'warn','');
			}else{
				file_length++;
				var size = bytesToSize(file.size);
		        var row = { fileId: file.id, name: file.name, type: file.ext, size: size, status: "等待上传",action:"todo" };
		        var addFileHtml='<div id="'+id+file.id+'-file-row" style="margin:8px 0 8px 0;">'+
		        							'<img src="'+ctx+'/trunk/img/frame/style2/file/5-'+file.ext+'.png"/>'+
		        							'<a class="fileGrid-file-imgview" style="position: relative;top: -7px;cursor:pointer;margin-left: 6px;" filedId="'+file.id+'" type="'+file.ext+'">'+file.name+'/'+bytesToSize(file.size)+'</a>'+
		        							'<img class="fileGrid-file-remove" src="'+ctx+'/trunk/img/frame/style2/frame-top/tab-close.png" filedId="'+file.id+'" style="cursor:pointer;position: relative;top: -7px;margin-left: 8px;"></img>'+
		        							'<span id="'+id+file.id+'_view_div_message" style="position: relative;top: -7px;margin-left: 12px;color:#456DE9;"></span>'+
		        							'</div>';
		        fileGridDom.append(addFileHtml);
			}
		});
		//文件选择、上传过程中的错误事件
		uploader.on('error', function (type, arg, file) {
	        if (type == "Q_TYPE_DENIED") {
	        	showAlert("文件【"+ arg.name+"】格式错误！",'warn','');
	        } else if (type == "F_EXCEED_SIZE") {
	        	showAlert('文件【' + file.name + '】大小不能超过'+bytesToSize(uploader.options.fileSingleSizeLimit)+'！','warn','');
	        }else if (type == "Q_EXCEED_SIZE_LIMIT") {
	        	showAlert('一次选择的所有文件总大小不能超过'+bytesToSize(uploader.options.fileSizeLimit)+'！','warn','');
	        }else if (type == "Q_EXCEED_NUM_LIMIT") {
	        	showAlert('一次选择的所有文件总数不能超过'+uploader.options.fileNumLimit+'个！','warn','');
	        }else if (type == "F_DUPLICATE") {
	        	showAlert('文件重复【'+arg.name+'】','warn','');
	        }else {
	        	showAlert("上传出错！请检查后重新上传！错误代码" + type,'warn','');
	        }
	    });

		//上传过程
	   uploader.on('uploadProgress', function (file, percentage) {
	        fileGridDom.find("#"+id+file.id+"_view_div_message").html("上传中……"+ (percentage*100.0).toFixed(2)+"%");
	    });
	   //上传成功
	   uploader.on('uploadSuccess', function (file) {
		   fileGridDom.find("#"+id+file.id+"_view_div_message").html("已上传");
	    });
	   //上传失败
	   var errorFiles=[];
	   uploader.on('uploadError', function (file,reason) {
		   errorFiles.push(file);
		   fileGridDom.find("#"+id+file.id+"_view_div_message").html("<font color='red'>上传失败</font>");
	    });
	   //上传结束
	   uploader.on('uploadComplete', function (file) {
		   uploader.removeFile(file.id,true);
		   file_length--;
		   if(file_length==0){
			   fileGridDom.html("");
			   if(e.uploadComplete){
				   e.uploadComplete({errorFiles:errorFiles});
			   }
		   }
	    });
	};
	/*计算文件大小*/
	var bytesToSize=function (bytes) {
        if (bytes === 0) return '0 B';
        var k = 1024,
         sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
         i = Math.floor(Math.log(bytes) / Math.log(k));
        return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];
    };
	var upload=function(e5){
		if(uploader){
			if(file_length==0){
				return 0;
			}else{
				if(e5){
					 uploader.option('formData', e5);//{mainId:'',xxx:''}  name、id、type、lastModifiedDate、size、file不能作为参数名使用
				}
				 uploader.upload();
				 return 1;
			}
		}else{
			showAlert("上传控件未初始化",'error','');
		}
	};
	var loadGrid=function(e6){
		$.ajax({
			url : gridUrl,
			data :e6,
			success : function(text) {
				if(text){
					fileGridDom.html("");
					for(var i=0;i<text.length;i++){
						var type_=text[i].type;
						var name_=text[i].name;
						var size_=text[i].size;
						var url_=text[i].url;
						
					    var isImgClass="";
				        if(type_=="gif"||type_=="jpg"||type_=="jpeg"||type_=="bmp"||type_=="png"){
				        	isImgClass="fileGrid-file-remote-imgview";
				        }else{
				        	isImgClass="fileGrid-file-remote-download";
				        }
					   var addFileHtml='<div id="'+id+i+'-remote-file-row" style="margin:8px 0 8px 0;">'+
						'<img src="'+ctx+'/trunk/img/frame/style2/file/5-'+type_+'.png"/>'+
						'<a class="'+isImgClass+'" style="position: relative;top: -7px;margin-left: 6px;cursor:pointer;" url="'+url_+'" fileName="'+name_+"."+type_+'" >'+name_+'/'+size_+'</a>'+
						'<img class="fileGrid-file-remote-remove" src="'+ctx+'/trunk/img/frame/style2/frame-top/tab-close.png" filedId="'+id+i+'" url="'+url_+'" style="cursor:pointer;position: relative;top: -7px;margin-left: 8px;"></img>'+
						'</div>';
					   fileGridDom.append(addFileHtml);
					}
				}
			}
		});
	};
	var reset=function(e7){
		if(fileGridDom&&uploader){
			file_length=0;
			fileGridDom.html("");
			var files=uploader.getFiles();
			for(var i=0;i<files.length;i++){
				uploader.removeFile(files[i]);
			}
		}else{
			showAlert("上传控件未初始化",'error','');
		}
	};
	return{
		initial:initial,
		upload:upload,
		reset:reset,
		loadGrid:loadGrid
	};
}






/****单个上传控件单个文件****/
SingleWebUploader=function(){
	var uploader;
	var viewDiv;//文件选择框，用于预览文件
	var file_length=0;
	var imgViewUrl="";
	var fileDownloadUrl="";
	var id="";
	var pickWidth=400;
	var pickHeight=200;
	 /* *****************************************************************
	 * 初始化方法
	 * *****************************************************************
	 * 参数{id:'',name:'',url:'',onlyImage:false,autoUpload:false,pasteAndDrag:true,uploadComplete:event,pickWidth:400,pickHeight:200}
	 * *****************************************************************
	 *  参数说明     id:上传控件绑定的元素ID，缺省时为file；
	 *					name：后台接收的上传控件域名称,缺省时为file；
	 *					url:上传文件的后台action地址；
	 * 				imgViewUrl：图片预览后台action地址；非图片不能预览。
	 * 				fileDownloadUrl：文件下载后台action地址
	 * 				fileDelete:删除服务器文件，加载服务器文件后点击x触发。
	 *					onlyImage:布尔类型，true时只接收图片格式，缺省为false，接收所有类型文件
	 *					acceptType:自定义上传文件类型，仅当onlyImage=false时生效。
	 *					autoUpload:布尔类型，true时自动上传文件，缺省为false
	 *					pasteAndDrag:布尔类型,true时支持文件拖拽和图片粘贴功能，缺省为true。多实例不建议启动此功能，会有BUG！
	 *					uploadComplete:上传结束事件，文件全部上传结束（无论成功或失败）后触发
	 *					pickWidth:文件选择区域宽度，缺省时默认400px
	 *					pickHeight:文件选择区域高度，缺省时默认200px
	 ******************************************************************/
	var initial=function(e){
		//参数处理
		id=e.id;
		imgViewUrl=e.imgViewUrl;
		fileDownloadUrl=e.fileDownloadUrl;
		if(id==undefined){
			id="file";
		}
		var name=e.name;
		if(name==undefined){
			name="file";
		}
		var acceptType=null;
		if(e.onlyImage==undefined||e.onlyImage==false){
			if(e.acceptType!=undefined){
				acceptType=e.acceptType;
			}else{
    			acceptType= {
    					title:'AllFile',
    					extensions: "jpg,jpeg,bmp,png,doc,docx,xls,xlsx,ppt,pptx,pdf,rar,zip",
    					mimeTypes: "image/jpg,image/jpeg,image/bmp,image/png,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.rar,.zip"
                };
			}
		}else{
			acceptType={
	 	        	title: 'Images',
	 	        	extensions: 'jpg,jpeg,bmp,png',
	        	    mimeTypes: 'image/jpg,image/jpeg,image/bmp,image/png'
	        	    	
		    };
		}
		var autoUpload=e.autoUpload;
		if(autoUpload==undefined){
			autoUpload=false;
		}
		pickWidth=e.pickWidth;
		if(pickWidth==undefined){
			pickWidth=400;
		}
		pickHeight=e.pickHeight;
		if(pickHeight==undefined){
			pickHeight=200;
		}
		var pasteAndDrag=e.pasteAndDrag;
		if(pasteAndDrag==undefined){
			pasteAndDrag=true;
		}
		var formData =e.formData ;
		if(formData==undefined){
			formData={};
		}
		//渲染文件选择框
		$("#"+id).parent().css("vertical-align","top");
		$("#"+id).parent().append("<div id='"+id+"_view_div' class='upload-single-view'></div>");
		viewDiv=$("#"+id+"_view_div");
		//初始化下载form
		var downloadFormDom=$("#fileGrid-file-remote-download-form")[0];
		if(downloadFormDom==undefined){
			$(document.body).append('<form id="fileGrid-file-remote-download-form" action="" method="post"></form>');
		}
		
		
		var pasteAndDragDnd=null;
		if(pasteAndDrag){
			pasteAndDragDnd=viewDiv;
		}
		//初始化上传按钮
		uploader= WebUploader.create({
		    // swf文件路径
		    swf: ctx+'/js/webuploader-0.1.5/Uploader.swf',
		    // 文件接收服务端。
		    server: e.url,
		    // 选择文件的按钮。可选。
		    // 内部根据当前运行是创建，可能是input元素，也可能是flash.
		    pick: {
		    	id:"#"+id,
		    	multiple:false
		    },
		    fileVal:name,//设置文件上传域的name（后台根据此name接收文件）默认值为file。
		    // 不压缩image, 默认如果是jpeg，文件上传前会压缩一把再上传！
		    resize: false,
		 	// 单个文件大小限制（单位：byte），这里限制为 100M
	        fileSingleSizeLimit:100*1024 * 1024,
	        fileNumLimit:1,//上传数量限制
	        fileSizeLimit:100*1024*1024,//限制上传所有文件大小
	        chunked: false,// 开启分片上传，如果要开启的话，后台要提供对应的支持。
	        timeout: 0,
	        accept: acceptType,
	        auto:autoUpload,
	        disableGlobalDnd:pasteAndDrag,//是否禁掉整个页面的拖拽功能，如果不禁用，图片拖进来的时候会默认被浏览器打开
	        dnd:pasteAndDragDnd,//拖拽区域
	        paste:pasteAndDragDnd,//document.body指定监听paste事件的容器，如果不指定，不启用此功能。通过粘贴来添加截屏的图片
	        formData:formData
		});
		//绑定上传控件事件
		//文件选择事件
		file_length=0;
		
		//始终确保只有一个文件，在选择文件之前先把之前选择的文件移除
		uploader.on('beforeFileQueued', function( file ) {
			var files=uploader.getFiles();
			for(var i=0;i<files.length;i++){
				uploader.removeFile(files[i]);
			}
		});
		
		uploader.on('fileQueued', function( file ) {
			if(file.name.length>50){
				file_length=0;
				uploader.removeFile(file.id,true);
				showAlert("文件名字符长度不能超过50！",'warn','');
			}else{
				file_length=1;
				//添加文件预览框
				if(file.ext=="gif"||file.ext=="jpg"||file.ext=="jpeg"||file.ext=="bmp"||file.ext=="png"){//图片预览
					uploader.makeThumb( file, function( error, src ) {
			    		if(!error){
			    			var message_width=pickWidth-16;
			    			viewDiv.html('<img style="width:'+pickWidth+'px;height:'+pickHeight+'px;" src="'+src+'"></img>'+
			    					'<img id="'+id+'_view_div_remove" src="'+ctx+'/trunk/img/frame/style2/frame-top/tab-close.png" filedId="'+file.id+'" style="position:absolute;z-index:999;cursor:pointer;"></img>'+
			    					'<span id="'+id+'_view_div_message" style="width:'+message_width+'px;height:26px;line-height:26px;left:0;top:0;text-align:center;position: absolute;color:#456DE9;z-index:2;font-weight: bold;"></span>');
			    		}
			        },1,1);
					viewDiv.removeClass("upload-single-view-noimg");
				}else{
					viewDiv.html('<img src="'+ctx+'/trunk/img/frame/style2/file/5-'+file.ext+'.png"/><a style="position: relative;top: -7px;margin-left: 6px;cursor:pointer;" onclick="showAlertAutoHide(\'本地文件不支持预览！\',\'warn\',1000)">'+file.name+'/'+bytesToSize(file.size)+'</a>'+
							'<img id="'+id+'_view_div_remove" src="'+ctx+'/trunk/img/frame/style2/frame-top/tab-close.png" filedId="'+file.id+'" style="cursor:pointer;position: relative;top: -7px;margin-left: 8px;"></img>'+
	    					'<span id="'+id+'_view_div_message" style="position: relative;top: -7px;margin-left: 8px;color:#456DE9;margin-left:12px;"></span>');
					viewDiv.removeClass("upload-single-view-nofile");
				}
			}
		});
		//删除本地文件
		$(viewDiv).on("click","#"+id+"_view_div_remove",function (e1) {
			file_length=0;
			viewDiv.html("");
			uploader.removeFile($(this).attr("filedId"),true);
	    })
	    //删除远程文件
		$(viewDiv).on("click","#"+id+"_view_div_remote_remove",function (e2) {
			viewDiv.html("");
			e.fileDelete($(this).attr("url"));
	    });
		//下载远程文件
		$(viewDiv).on("click","#"+id+"_view_div_remote_download",function (e6) {
			 $("#fileGrid-file-remote-download-form").attr("action", fileDownloadUrl+"?url=" + $(this).attr("url")+"&fileName="+$(this).attr("name"));
	         $("#fileGrid-file-remote-download-form").submit();
	    });
		//文件选择、上传过程中的错误事件
		uploader.on('error', function (type, arg, file) {
	        if (type == "Q_TYPE_DENIED") {
	        	showAlert("文件【"+ arg.name+"】格式错误！",'warn','');
	        } else if (type == "F_EXCEED_SIZE") {
	        	showAlert('文件【' + file.name + '】大小不能超过'+bytesToSize(uploader.options.fileSingleSizeLimit)+'！','warn','');
	        }else if (type == "Q_EXCEED_SIZE_LIMIT") {
	        	showAlert('一次选择的所有文件总大小不能超过'+bytesToSize(uploader.options.fileSizeLimit)+'！','warn','');
	        }else if (type == "Q_EXCEED_NUM_LIMIT") {
	        	showAlert('一次选择的所有文件总数不能超过'+uploader.options.fileNumLimit+'个！','warn','');
	        }else if (type == "F_DUPLICATE") {
	        	showAlert('文件重复【'+arg.name+'】','warn','');
	        }else {
	        	showAlert("上传出错！请检查后重新上传！错误代码" + type,'warn','');
	        }
	    });

		//上传过程
	   uploader.on('uploadProgress', function (file, percentage) {
		   $("#"+id+"_view_div_message").css("width","100%");
		   $("#"+id+"_view_div_message").html("上传中……"+(percentage*100.0).toFixed(2)+"%")
	    });
	   //上传成功
	   uploader.on('uploadSuccess', function (file) {
		   $("#"+id+"_view_div_message").css("width","100%");
		   $("#"+id+"_view_div_message").html("上传成功");
	    });
	   //上传失败
	   var errorFiles=[];
	   uploader.on('uploadError', function (file) {
		   $("#"+id+"_view_div_message").css("width","100%");
		   $("#"+id+"_view_div_message").html("<font color='red'>上传失败</font>");
		   errorFiles.push(file);
	    });
	   //上传结束
	   uploader.on('uploadComplete', function (file) {
		  //$("#"+id+"_view_div_remove").remove();
		   uploader.removeFile(file.id,true);
		   file_length=0;
		   if(e.uploadComplete){
			   e.uploadComplete({errorFiles:errorFiles,viewDiv:viewDiv});
		   }
	    });
	};
	//计算文件大小
	var bytesToSize=function (bytes) {
        if (bytes === 0) return '0 B';
        var k = 1024,
         sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
         i = Math.floor(Math.log(bytes) / Math.log(k));
        return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];
    };
	var upload=function(e4){
		if(uploader){
			if(file_length==0){
				return 0;
			}else{
				if(e4){
					 uploader.option('formData', e4);//{mainId:'',xxx:''}  name、id、type、lastModifiedDate、size、file不能作为参数名使用
				}
				 uploader.upload();
				 return 1;
			}
		}else{
			showAlert("上传控件未初始化",'error','');
		}
	};
	var reset=function(e3){
		if(uploader&&viewDiv){
			file_length=0;
			var files=uploader.getFiles();
			for(var i=0;i<files.length;i++){
				uploader.removeFile(files[i]);
			}
			viewDiv.html("");
		}else{
			showAlert("上传控件未初始化",'error','');
		}
	};
	//加载服务端图片
	var loadServerFile=function(e5,name,size){
		if(e5!=null&&e5!=undefined&&e5!=""){
			if(e5.indexOf(".")!=-1){
				var file_type=e5.substr(e5.lastIndexOf(".")+1);
				if(file_type=="gif"||file_type=="jpg"||file_type=="jpeg"||file_type=="bmp"||file_type=="png"){
					viewDiv.html('<img style="width:'+pickWidth+'px;height:'+pickHeight+'px;" src="'+imgViewUrl+'?url='+e5+'"></img>'+
							'<img id="'+id+'_view_div_remote_remove" src="'+ctx+'/trunk/img/frame/style2/frame-top/tab-close.png" url="'+e5+'" style="position:absolute;z-index:999;cursor:pointer;"></img>');
				}else{
					if(size!=""){
						size="/"+size;
					}
					viewDiv.html('<img src="'+ctx+'/trunk/img/frame/style2/file/5-'+file_type+'.png"/><a id="'+id+'_view_div_remote_download" href="javascript:void(0)"  style="position: relative;top: -7px;margin-left: 6px;text-decoration:none;color:#333333;" url="'+e5+'" name="'+name+'">'+name+size+'</a>'+
							'<img id="'+id+'_view_div_remote_remove" src="'+ctx+'/trunk/img/frame/style2/frame-top/tab-close.png" url="'+e5+'" style="z-index:999;cursor:pointer;position: relative;top: -7px;margin-left: 8px;"></img>');
				}
			}
		}
	};
	return{
		initial:initial,
		upload:upload,
		reset:reset,
		loadServerFile:loadServerFile
	};
}
